#include "task.h"
#include "printk.h"
#include "lib.h"
#include "sched.h"

#define __init_task_data __attribute__((__section__(".data.init_task")))

struct task_struct* g_tasks[MAX_TASK] = {&init_task};
struct run_queue rq;

task_union init_task_union __init_task_data = {INIT_TASK(init_task_union.tsk)};

int find_empty_task(void) {
	int i;

	for (i = 0 ; i < MAX_TASK; i++) {
		if (!g_tasks[i])
			return i;
	}

	return -1;
}


void init_run_queue() {
	// list_init(&rq.list_entry);
	// list_add_to_behind(&rq.list_entry, &init_task.list_entry);
	// rq.task_num += 1;
	list_init(&init_task.list_entry);
}

void task01() {
	while(1) {
		printk("task1 \n");
		schedule();
	}
}


void task02() {
	while(1) {
		printk("task2 \n");
		schedule();
	}
}

